home *** CD-ROM | disk | FTP | other *** search
- unit QueryEditor;
- {$I DQuery.inc}
-
- interface
-
- uses
- {$IFDEF WIN32}
- Windows, ComCtrls,
- {$ELSE}
- WinTypes, WinProcs,
- {$ENDIF}
- Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, Buttons, Tabnotbk, DB, DBTables,
- ExtCtrls, dclDQuery, DQLinkCtrl;
- Const
- IDW_TablesNotFound = 'Prease insert table before continue';
- IDW_ALIAS_REDEFINE = 'The Alias [%s] redefine.';
- IDW_SORT_REDEFINE = 'The Sort [%s] redefine.';
- IDW_GROUP_REDEFINE = 'The Group [%s] redefine.';
- type
- TFormQuery = class(TForm)
- TNotebook: TTabbedNotebook;
- BBViewData: TBitBtn;
- BBViewSQL: TBitBtn;
- BBOK: TBitBtn;
- BBCancel: TBitBtn;
- BBHelp: TBitBtn;
- GroupBox1: TGroupBox;
- BBBDE: TBitBtn;
- BBTable: TBitBtn;
- LinkCtrl: TDQLinkCtrl;
- BBDeleteLink: TBitBtn;
- BBOptionLine: TBitBtn;
- BBArrange: TBitBtn;
- BBSortAdd: TBitBtn;
- BBSortRemove: TBitBtn;
- Label5: TLabel;
- FieldAllField: TTreeView;
- BBFieldsAdd: TBitBtn;
- BBFieldsRemove: TBitBtn;
- BBAddShowTable: TBitBtn;
- BBRemoveShowAll: TBitBtn;
- GroupBox2: TGroupBox;
- Label7: TLabel;
- Label8: TLabel;
- Label9: TLabel;
- CBFunction: TComboBox;
- ESelectField: TEdit;
- EColumnName: TEdit;
- GroupBox3: TGroupBox;
- LBSelect: TListBox;
- GroupBox4: TGroupBox;
- LabelAnd: TLabel;
- CBField: TComboBox;
- CBCommand: TComboBox;
- BBAdd: TBitBtn;
- BBRemove: TBitBtn;
- BBEdit: TBitBtn;
- BBClear: TBitBtn;
- GroupBox5: TGroupBox;
- LBTable: TListBox;
- GroupBox6: TGroupBox;
- GroupBox7: TGroupBox;
- LBSort: TListBox;
- RGSort: TRadioGroup;
- GroupBox8: TGroupBox;
- ListBoxSelect: TListBox;
- GroupBox9: TGroupBox;
- BBGroupAdd: TBitBtn;
- BBGroupRemove: TBitBtn;
- GroupBox10: TGroupBox;
- LBGroup: TListBox;
- BBAddFields: TBitBtn;
- LBSortAll: TListBox;
- LBGroupsAll: TListBox;
- GroupBox11: TGroupBox;
- BBRemoveTable: TBitBtn;
- GroupBox12: TGroupBox;
- CBRemove: TCheckBox;
- CBValue1: TEdit;
- CBValue2: TEdit;
- SBValue1: TSpeedButton;
- SBValue2: TSpeedButton;
- OpenDBDlg: TOpenDialog;
- RBCriteriaWith: TRadioGroup;
- procedure FormCreate(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure FormShow(Sender: TObject);
- procedure BBOKClick(Sender: TObject);
- procedure BBCancelClick(Sender: TObject);
- procedure BBHelpClick(Sender: TObject);
- procedure BBViewDataClick(Sender: TObject);
- procedure BBViewSQLClick(Sender: TObject);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure TNotebookChange(Sender: TObject; NewTab: Integer;
- var AllowChange: Boolean);
- procedure BBBDEClick(Sender: TObject);
- procedure BBTableClick(Sender: TObject);
- procedure BBRemoveTableClick(Sender: TObject);
- procedure BBDeleteLinkClick(Sender: TObject);
- procedure BBOptionLineClick(Sender: TObject);
- procedure BBArrangeClick(Sender: TObject);
- procedure LinkCtrlNewLink(Sender: TObject);
- procedure LinkCtrlSelectLinkEvent(Sender: TObject; bSelect: Boolean);
- procedure BBFieldsAddClick(Sender: TObject);
- procedure BBFieldsRemoveClick(Sender: TObject);
- procedure BBAddShowTableClick(Sender: TObject);
- procedure BBAddFieldsClick(Sender: TObject);
- procedure BBRemoveShowAllClick(Sender: TObject);
- procedure FieldAllFieldClick(Sender: TObject);
- procedure CBFunctionClick(Sender: TObject);
- procedure BBSortAddClick(Sender: TObject);
- procedure BBSortRemoveClick(Sender: TObject);
- procedure RGSortClick(Sender: TObject);
- procedure ListBoxSelectDragDrop(Sender, Source: TObject; X,
- Y: Integer);
- procedure ListBoxSelectDragOver(Sender, Source: TObject; X, Y: Integer;
- State: TDragState; var Accept: Boolean);
- procedure LBSortDragDrop(Sender, Source: TObject; X, Y: Integer);
- procedure LBSortDragOver(Sender, Source: TObject; X, Y: Integer;
- State: TDragState; var Accept: Boolean);
- procedure LBSortClick(Sender: TObject);
- procedure BBGroupAddClick(Sender: TObject);
- procedure BBGroupRemoveClick(Sender: TObject);
- procedure LBGroupDragDrop(Sender, Source: TObject; X, Y: Integer);
- procedure LBGroupDragOver(Sender, Source: TObject; X, Y: Integer;
- State: TDragState; var Accept: Boolean);
- procedure CBFieldClick(Sender: TObject);
- procedure CBCommandClick(Sender: TObject);
- procedure BBAddClick(Sender: TObject);
- procedure BBRemoveClick(Sender: TObject);
- procedure BBEditClick(Sender: TObject);
- procedure BBClearClick(Sender: TObject);
- procedure LBSelectDragDrop(Sender, Source: TObject; X, Y: Integer);
- procedure LBSelectDragOver(Sender, Source: TObject; X, Y: Integer;
- State: TDragState; var Accept: Boolean);
- procedure LBSelectClick(Sender: TObject);
- procedure SBValue1Click(Sender: TObject);
- procedure SBValue2Click(Sender: TObject);
- private
- StDataBase: String;
- StTable: String;
- StAlias: String;
- bMultiDB: Boolean;
-
- Function SetupValue: Boolean;
- Procedure AddTable (Sender: TObject);
- Procedure NewTable;
- Procedure AddFieldInfoToAllControl (StAlias: String);
- Procedure RemoveFieldInfoToAllControl (StAlias: String);
-
- { Link }
- Procedure GetTableLink;
-
- { Select Fields }
- Procedure SelectField;
- Procedure EnabledField;
- Procedure AddFieldWithAlias (StAlias: String);
-
- { Criteria }
- Procedure VisibleCriteria (bV1, bV2: Boolean);
- Procedure GetCriterias (Var DQCriterias: RDQCriterias);
- Procedure SetCriterias (DQCriterias: RDQCriterias);
-
- { Table Info }
- Procedure DestroyTableInfo;
- Procedure CreateTableInfos;
- Procedure CreateTableInfo (StDB, StTable, StAlias: String; bWait: Boolean);
- Function CriteriasAsString (iCount: Integer; CriteriasPtr: PRDQCriterias): String;
- Function GetLastNode (TreeView: TTreeView): TTreeNode;
- Procedure GetSelectField (Items: TStrings);
- Function FieldSelect (TreeView: TTreeView; Var StAlias: String): String;
- Procedure CheckColumnNameDup (Var St: String);
- Procedure DeleteTreeViewByAlias (TreeView: TTreeView; StAlias: String);
- Function FindAlias (TreeView: TTreeView; StAlias: String): TTreeNode;
- Procedure LoadQueryToScreen;
- Procedure RemoveObjectWithAlias (StAlias: String);
- Procedure GetTableAndField (StColumn: String; Var StDB, StTable, StAlias, StField: String);
- Procedure LoadFieldToScreen;
- public
- DuckQuery: TDuckQuery;
- end;
-
- var
- FormQuery: TFormQuery;
-
- implementation
-
- Uses DQAddTable, DQViewText, DQViewData, DQSelectV;
- {$R *.DFM}
-
- Function MessageBoxWarning (St: String): Integer;
- Begin
- Result := MessageDlg (St, mtWarning, [mbOK], 0);
- End;
- Function MessageBoxFormatWarning (St: String; const Args: array of const): Integer;
- Begin
- Result := MessageDlg (Format (St, Args), mtWarning, [mbOK], 0);
- End;
- Function CheckColumnName (StColumnName: String): String;
- Begin
- Result := DQCutCharInString (StColumnName,' ().');
- End;
- Function GetAlias (TreeView: TTreeView): String;
- Begin
- Result := '';
- if TreeView.Selected = nil Then Exit;
- if TreeView.Selected.Parent = nil Then
- Result := TreeView.Selected.Text
- Else
- Result := TreeView.Selected.Parent.Text;
- End;
- Procedure TFormQuery.FormCreate(Sender: TObject);
- Begin
- DuckQuery := TDuckQuery.Create (Self);
- bMultiDB := TRUE;
- TNotebook.PageIndex := 0;
- SendMessage (LBSelect.Handle, LB_SETHORIZONTALEXTENT, 1000, 0);
- End;
- Procedure TFormQuery.FormDestroy(Sender: TObject);
- Begin
- DestroyTableInfo;
- DuckQuery.Free;
- FormQuery := nil;
- End;
- Procedure TFormQuery.FormClose(Sender: TObject; var Action: TCloseAction);
- Begin
- Action := caFree;
- End;
- Procedure TFormQuery.DestroyTableInfo;
- Var
- TableInfoPtr: PRDQTableInfo;
- i: Integer;
- Begin
- For i := 0 To DuckQuery.TableInfo.Count - 1 Do
- Begin
- TableInfoPtr := DuckQuery.TableInfo[i];
- if TableInfoPtr^.Table <> nil Then
- TableInfoPtr^.Table.Free;
- if TableInfoPtr^.FieldName <> nil Then
- TableInfoPtr^.FieldName.Free;
- End;
- DuckQuery.TableInfo.Clear;
- End;
- Procedure TFormQuery.CreateTableInfos;
- Var
- TableInfo: RDQTableInfo;
- TablePtr: PRDQTable;
- i: Integer;
- Cursor: TCursor;
- Begin
- if DuckQuery.DQTables.Count <= 0 Then Exit;
- Cursor := Screen.Cursor;
- Screen.Cursor := crHourGlass;
-
- Try
- For i := 0 To DuckQuery.DQTables.Count - 1 Do
- Begin
- TablePtr := DuckQuery.DQTables[i];
- CreateTableInfo (TablePtr.DataBase, TablePtr.Table,
- TablePtr.Alias, FALSE);
- End;
- Finally
- Screen.Cursor := Cursor;
- End;
- End;
- Procedure TFormQuery.CreateTableInfo (StDB, StTable, StAlias: String; bWait: Boolean);
- Var
- TableInfo: RDQTableInfo;
- i: Integer;
- Cursor: TCursor;
- Begin
- if bWait Then
- Begin
- Cursor := Screen.Cursor;
- Screen.Cursor := crHourGlass;
- End;
- TableInfo.Alias := StAlias;
- TableInfo.Table := TTable.Create (nil);
- Try
- if StDB <> '' Then
- TableInfo.Table.Databasename := StDB;
- TableInfo.Table.TableName := StTable;
- Try
- TableInfo.Table.Active := TRUE;
- Finally
- if TableInfo.Table.Active Then
- Begin
- TableInfo.FieldName := TStringList.Create;
- For i := 0 to TableInfo.Table.FieldCount - 1 Do
- TableInfo.FieldName.Add (TableInfo.Table.Fields[i].FieldName);
- With TableInfo.FieldName as TStringList Do
- Begin
- Sorted := TRUE;
- Sorted := FALSE;
- End;
- DuckQuery.TableInfo.Add (@TableInfo);
- End;
- End;
- Finally
- if bWait Then
- Begin
- Screen.Cursor := Cursor;
- End;
- End;
- End;
- Procedure TFormQuery.LoadQueryToScreen;
- Var
- i: Integer;
- GroupPtr: PRDQGroup;
- SortPtr: PRDQSort;
- CriteriasPtr: PRDQCriterias;
- St: String;
- Begin
- GetSelectField (ListBoxSelect.Items);
- LoadFieldToScreen;
-
- LBGroup.Items.BeginUpdate;
- For i := 0 To DuckQuery.DQGroups.Count - 1 Do
- Begin
- GroupPtr := DuckQuery.DQGroups[i];
- LBGroup.Items.Add (GroupPtr.Field);
- End;
- LBGroup.Items.EndUpdate;
-
- LBSort.Items.BeginUpdate;
- For i := 0 To DuckQuery.DQSorts.Count - 1 Do
- Begin
- SortPtr := DuckQuery.DQSorts[i];
- if SortPtr.SortType = gsAscending Then
- LBSort.Items.Add ('A - ' + SortPtr.Field)
- Else
- LBSort.Items.Add ('D - ' + SortPtr.Field);
- End;
- LBSort.Items.EndUpdate;
-
- LBSelect.Items.BeginUpdate;
- For i := 0 To DuckQuery.DQCriterias.Count - 1 Do
- Begin
- CriteriasPtr := DuckQuery.DQCriterias[i];
- St := CriteriasAsString (i, CriteriasPtr);
- LBSelect.Items.Add (St);
- End;
- LBSelect.Items.EndUpdate;
- RBCriteriaWith.Visible := DuckQuery.DQCriterias.Count > 0;
- End;
- Procedure TFormQuery.RemoveObjectWithAlias (StAlias: String);
- Var
- i: Integer;
- TablePtr: PRDQTable;
- GroupPtr: PRDQGroup;
- SortPtr: PRDQSort;
- CriteriasPtr: PRDQCriterias;
- FieldPtr: PRDQField;
- StFind: String;
- iFind: Integer;
- Begin
- // Remove Table
- i := 0;
- While i < DuckQuery.DQTables.Count Do
- Begin
- TablePtr := DuckQuery.DQTables[i];
- if TablePtr.Alias = StAlias Then
- Begin
- DuckQuery.DQTables.Delete (i);
- Continue;
- End;
- Inc (i);
- End;
-
- // Remove Field
- i := 0;
- StFind := StAlias + '.';
- While i < DuckQuery.DQFields.Count Do
- Begin
- FieldPtr := DuckQuery.DQFields[i];
- if Pos (StFind, FieldPtr.Data) > 0 Then
- Begin
- iFind := DuckQuery.DQGroups.FindAsString (FieldPtr.ColumnName);
- if iFind >= 0 Then
- DuckQuery.DQGroups.Delete (iFind);
- iFind := DuckQuery.DQSorts.FindAsString (FieldPtr.ColumnName);
- if iFind >= 0 Then
- DuckQuery.DQSorts.Delete (iFind);
- iFind := DuckQuery.DQCriterias.FindAsString (FieldPtr.ColumnName);
- if iFind >= 0 Then
- DuckQuery.DQCriterias.Delete (iFind);
-
- DuckQuery.DQFields.Delete (i);
- Continue;
- End;
- Inc (i);
- End;
- End;
- Procedure TFormQuery.FormShow(Sender: TObject);
- Var
- i: Integer;
- QueryLink: RQueryLink;
- TablePtr: PRDQTable;
- LinkPtr: PRDQLink;
- AllowChange: Boolean;
- {$IFDEF VERIFY_MSACCESS}
- TempSession: TSession;
- St: String;
- {$ENDIF}
- Begin
- CreateTableInfos;
- LBTable.Items.BeginUpdate;
- Try
- For i := 0 To DuckQuery.DQTables.Count - 1 Do
- Begin
- TablePtr := DuckQuery.DQTables[i];
- AddFieldInfoToAllControl (TablePtr.Alias);
- LBTable.Items.Add (TablePtr.Alias);
- {$IFDEF VERIFY_MSACCESS}
- if i = 0 Then
- Begin
- TempSession := DuckQuery.DBSession;
- if TempSession = nil Then
- TempSession := Session;
- if (TablePtr.DataBase <> '') and
- (TablePtr.DataBase[Length (TablePtr.DataBase)] <> '\') Then
- Begin
- St := TempSession.GetAliasDriverName (TablePtr.DataBase);
- if St = 'MSACCESS' Then
- bMultiDB := FALSE;
- End;
- End;
- {$ENDIF}
- End;
- Finally
- LBTable.Items.EndUpdate;
- End;
- For i := 0 To DuckQuery.DQTableLinks.Count - 1 Do
- Begin
- LinkPtr := DuckQuery.DQTableLinks[i];
- QueryLink.MAlias := LinkPtr.MAlias;
- QueryLink.MField := LinkPtr.MField;
- QueryLink.DAlias := LinkPtr.DAlias;
- QueryLink.DField := LinkPtr.DField;
- QueryLink.QueryLinkType := TQueryLinkType (LinkPtr.TableLinkType);
- LinkCtrl.AddLink (QueryLink);
- End;
- LinkCtrl.ReInitTableLink;
-
- LoadQueryToScreen;
-
- // LBGroup
- BBGroupRemove.Enabled := LBGroup.Items.Count > 0;
- BBSortRemove.Enabled := LBSort.Items.Count > 0;
- BBRemove.Enabled := LBSelect.Items.Count > 0;
- EnabledField;
- AllowChange := TRUE;
- TNotebookChange (nil, TNotebook.PageIndex, AllowChange);
- CBRemove.Checked := DuckQuery.Duplicate;
- End;
- Function TFormQuery.CriteriasAsString (iCount: Integer; CriteriasPtr: PRDQCriterias): String;
- Begin
- Result := CriteriasPtr.Field;
- Case CriteriasPtr.CriteriaType of
- scEqual: Result := Result + ' = ';
- scNotEqual: Result := Result + ' <> ';
- scLess: Result := Result + ' < ';
- scLessEqual: Result := Result + ' <= ';
- scGreater: Result := Result + ' > ';
- scGreaterEqual: Result := Result + ' >= ';
- scBetween: Result := Result + ' > ';
- scBetweenEqual: Result := Result + ' >= ';
- scNOTNULL: Result := Result + ' IS NOT NULL';
- scNULL: Result := Result + ' IS NOT';
- scIN: Result := Result + ' IN ( ';
- scLike: Result := Result + ' LIKE ';
- scNotLike: Result := Result + ' NOT LIKE ';
- End;
- Result := Result + CriteriasPtr.Value1;
- if (CriteriasPtr.CriteriaType = scBetween) or
- (CriteriasPtr.CriteriaType = scBetweenEqual) Then
- Begin
- Case CriteriasPtr.CriteriaType of
- scBetween: Result := Result + ' AND < ';
- scBetweenEqual: Result := Result + ' AND >= ';
- End;
- Result := Result + CriteriasPtr.Value2;
- End;
- Case CriteriasPtr.CriteriaType of
- scIN: Result := Result + ' )';
- End;
- if iCount > 0 Then
- Begin
- if CriteriasPtr.AddType = caAnd Then
- Result := 'AND ' + Result
- Else
- Result := 'OR ' + Result;
- End;
- End;
- Function TFormQuery.GetLastNode (TreeView: TTreeView): TTreeNode;
- Var
- TreeNode: TTreeNode;
- Begin
- TreeNode := TreeView.Items.GetFirstNode;
- Result := nil;
- While TreeNode <> nil Do
- Begin
- Result := TreeNode;
- TreeNode := TreeNode.GetNextChild (TreeNode);
- End;
- End;
- Procedure TFormQuery.GetSelectField (Items: TStrings);
- Var
- i: Integer;
- FieldPtr: PRDQField;
- Begin
- Items.BeginUpdate;
- Items.Clear;
- Try
- For i := 0 To DuckQuery.DQFields.Count - 1 Do
- Begin
- FieldPtr := DuckQuery.DQFields[i];
- Items.Add (FieldPtr.ColumnName);
- End;
- Finally
- Items.EndUpdate;
- End;
- End;
- Function TFormQuery.FieldSelect (TreeView: TTreeView; Var StAlias: String): String;
- Begin
- Result := '';
- StAlias := '';
- if TreeView.Selected = nil Then Exit;
- if TreeView.Selected.Parent = nil Then Exit;
- Result := TreeView.Selected.Text;
- StAlias := TreeView.Selected.Parent.Text;
- End;
- Procedure TFormQuery.CheckColumnNameDup (Var St: String);
- Var
- i: Integer;
- StTemp: String;
- Begin
- StTemp := St;
- i := 0;
- While (TRUE) Do
- Begin
- if DuckQuery.DQFields.FindAsString (StTemp) = -1 Then Break;
- Inc (i);
- StTemp := St + IntToStr (i);
- End;
- St := StTemp;
- End;
- Procedure TFormQuery.DeleteTreeViewByAlias (TreeView: TTreeView; StAlias: String);
- Var
- TreeNode: TTreeNode;
- Begin
- TreeNode := FindAlias (TreeView, StAlias);
- if TreeNode <> nil Then
- TreeNode.Free;
- End;
- Function TFormQuery.FindAlias (TreeView: TTreeView; StAlias: String): TTreeNode;
- Var
- TreeNode: TTreeNode;
- Begin
- TreeNode := TreeView.Items.GetFirstNode;
- While TreeNode <> nil Do
- Begin
- if TreeNode.Text = StAlias Then
- Break;
- TreeNode := TreeNode.GetNextChild (TreeNode);
- End;
- Result := TreeNode;
- End;
- Function TFormQuery.SetupValue: Boolean;
- Var
- i: Integer;
- Begin
- Result := FALSE;
- if DuckQuery.DQFields.Count <= 0 Then
- Begin
- i := TNotebook.GetIndexForPage ('Fields');
- TNotebook.PageIndex := i;
- FieldAllField.SetFocus;
- MessageBoxWarning (IDW_TablesNotFound);
- Exit;
- End;
- DuckQuery.Duplicate := CBRemove.Checked;
- GetTableLink;
- Result := TRUE;
- End;
- Procedure TFormQuery.BBOKClick(Sender: TObject);
- Begin
- if not SetupValue Then Exit;
- Close;
- ModalResult := mrOK;
- End;
- Procedure TFormQuery.BBCancelClick(Sender: TObject);
- Begin
- Close;
- ModalResult := mrCancel;
- End;
- Procedure TFormQuery.BBHelpClick(Sender: TObject);
- Begin
- Beep;
- End;
- Procedure TFormQuery.AddTable (Sender: TObject);
- Begin
- StDataBase := FormDQAddTable.StDataBase;
- StTable := FormDQAddTable.StTable;
- StAlias := FormDQAddTable.StAlias;
- NewTable;
- End;
- Procedure TFormQuery.AddFieldInfoToAllControl (StAlias: String);
- Var
- Items: TStrings;
- TableInfoPtr: PRDQTableInfo;
- St: String;
- TreeNode: TTreeNode;
- i: Integer;
- Begin
- TableInfoPtr := DuckQuery.TableInfo.FindAsStringPt (StAlias);
- if TableInfoPtr = nil Then Exit;
- Items := TStringList.Create;
- Try
- Items.Assign (TableInfoPtr.FieldName);
- TreeNode := GetLastNode (FieldAllField);
- TreeNode := FieldAllField.Items.Add (TreeNode, StAlias);
- For i := 0 to Items.Count - 1 Do
- Begin
- St := Items[i];
- FieldAllField.Items.AddChild (TreeNode, St);
- End;
-
- LinkCtrl.AddTable (StDataBase, StTable, StAlias, Items);
- Finally
- Items.Free;
- End;
- End;
- Procedure TFormQuery.RemoveFieldInfoToAllControl (StAlias: String);
- Begin
- LinkCtrl.DeleteControl (StAlias);
- DeleteTreeViewByAlias (FieldAllField, StAlias);
- RemoveObjectWithAlias (StAlias);
- LoadQueryToScreen;
- BBGroupRemove.Enabled := LBGroup.Items.Count > 0;
- BBSortRemove.Enabled := LBSort.Items.Count > 0;
- BBRemove.Enabled := LBSelect.Items.Count > 0;
- End;
- Procedure TFormQuery.BBViewDataClick(Sender: TObject);
- Var
- DQ: TDuckQuery;
- Begin
- if not SetupValue Then Exit;
- Screen.Cursor := crHourGlass;
- DQ := TDuckQuery.Create (Self);
- Try
- DQ.Assign (DuckQuery);
- DQ.DoSQL;
- DQ.Active := TRUE;
- FormDQViewData := TFormDQViewData.Create (Self);
- FormDQViewData.DataSource.DataSet := DQ;
- FormDQViewData.ShowModal;
- FormDQViewData.Free;
- Finally
- DQ.Free;
- Screen.Cursor := crDefault;
- End;
-
- End;
- Procedure TFormQuery.BBViewSQLClick(Sender: TObject);
- Begin
- if not SetupValue Then Exit;
- FormDQViewText := TFormDQViewText.Create (Self);
- DuckQuery.GetSQL (FormDQViewText.Memo.Lines);
- FormDQViewText.ShowModal;
- FormDQViewText.Free;
- End;
- Procedure TFormQuery.BBBDEClick(Sender: TObject);
- Begin
- FormDQAddTable := TFormDQAddTable.Create (Self);
- FormDQAddTable.bMultiDB := bMultiDB;
- FormDQAddTable.EveneAdd := AddTable;
- FormDQAddTable.ShowModal;
- bMultiDB := FormDQAddTable.bMultiDB;
- FormDQAddTable.Free;
- End;
- Procedure TFormQuery.BBTableClick(Sender: TObject);
- Var
- St: String;
- iTemp: Integer;
- Begin
- if OpenDBDlg.Execute Then
- Begin
- St := OpenDBDlg.FileName;
- StDataBase := ExtractFilePath (St);
- StTable := ExtractFileName (St);
- StAlias := StTable;
- St := ExtractFileExt (StTable);
- iTemp := Length (St);
- Delete (StAlias, Length (StTable) - iTemp + 1, iTemp);
- NewTable;
- End;
- End;
- Procedure TFormQuery.BBRemoveTableClick(Sender: TObject);
- Var
- StAlias: String;
- ItemIndex: Integer;
- Begin
- ItemIndex := LBTable.ItemIndex;
- if ItemIndex < 0 Then Exit;
- StAlias := LBTable.Items.Strings[ItemIndex];
- LBTable.Items.Delete (ItemIndex);
- RemoveFieldInfoToAllControl (StAlias);
- End;
-
- { Link }
- Procedure TFormQuery.BBDeleteLinkClick(Sender: TObject);
- Begin
- LinkCtrl.DeleteLineActive;
- End;
- Procedure TFormQuery.BBOptionLineClick(Sender: TObject);
- Begin
- LinkCtrl.OptionLineActive;
- End;
- Procedure TFormQuery.BBArrangeClick(Sender: TObject);
- Begin
- LinkCtrl.Arrange;
- End;
- Procedure TFormQuery.LinkCtrlNewLink(Sender: TObject);
- Begin
- // asd
- End;
- Procedure TFormQuery.LinkCtrlSelectLinkEvent(Sender: TObject;
- bSelect: Boolean);
- Begin
- BBDeleteLink.Enabled := bSelect;
- End;
- Procedure TFormQuery.GetTableLink;
- Var
- QueryLink: RQueryLink;
- i: Integer;
- Link: RDQLink;
- Begin
- DuckQuery.DQTableLinks.Clear;
- For i := 0 To LinkCtrl.TableLink.Count - 1 Do
- Begin
- if not LinkCtrl.GetLink (i, QueryLink) Then Continue;
- Link.MAlias := QueryLink.MAlias;
- Link.MField := QueryLink.MField;
- Link.TableLinkType := TDQLinkType (QueryLink.QueryLinkType);
- Link.DAlias := QueryLink.DAlias;
- Link.DField := QueryLink.DField;
-
- DuckQuery.DQTableLinks.Add (@Link);
- End;
- End;
- { Select Fields }
- Procedure TFormQuery.SelectField;
- Var
- StAlias: String;
- StField: String;
- StFunction: String;
- StData: String;
- StColumnName: String;
- Procedure AutoSelectField (StAlias, StField, StFunction: String;
- Var StData, StColumnName: String);
- Var
- StF: String;
- Begin
- StF := StAlias + '.' + '''' + StField + '''';
- StFunction := UpperCase (StFunction);
- if StFunction = 'SUM' Then StData := 'SUM (' + StF + ')'
- Else
- if StFunction = 'AVG' Then StData := 'AVG (' + StF + ')'
- Else
- if StFunction = 'COUNT' Then StData := 'COUNT (' + StF + ')'
- Else
- if StFunction = 'MIN' Then StData := 'MIN (' + StF + ')'
- Else
- if StFunction = 'MAX' Then StData := 'MAX (' + StF + ')'
- Else
- if StFunction = 'UPPER' Then StData := 'UPPER (' + StF + ')'
- Else
- if StFunction = 'LOWER' Then StData := 'LOWER (' + StF + ')'
- Else
- if StFunction = 'TRIM' Then StData := 'TRIM (' + StF + ')'
- Else
- if StFunction = 'SUBSTRING' Then StData := 'SUBSTRING (' + StF + ', 1, 20)'
- Else StData := StF;
- if StFunction = '' Then StColumnName := StField
- Else StColumnName := StFunction + StField;
- StColumnName := CheckColumnName (StColumnName);
- CheckColumnNameDup (StColumnName);
- End;
-
- Begin
- StField := FieldSelect (FieldAllField, StAlias);
- if (StAlias = '') or (StField = '') Then Exit;
- StFunction := CBFunction.Text;
- AutoSelectField (StAlias, StField, StFunction, StData, StColumnName);
-
- ESelectField.Text := StData;
- EColumnName.Text := StColumnName;
- End;
- Procedure TFormQuery.EnabledField;
- Begin
- BBFieldsRemove.Enabled := ListBoxSelect.Items.Count > 0;
- BBRemoveShowAll.Enabled := BBFieldsRemove.Enabled;
- End;
- Procedure TFormQuery.AddFieldWithAlias (StAlias: String);
- Var
- Items: TStrings;
- i: Integer;
- TableInfoPtr: PRDQTableInfo;
- StData: String;
- StColumnName: String;
- DQField: RDQField;
- Begin
- TableInfoPtr := DuckQuery.TableInfo.FindAsStringPt (StAlias);
- if TableInfoPtr = nil Then Exit;
-
- Items := TStringList.Create;
- Try
- Items.Assign (TableInfoPtr.FieldName);
- For i := 0 To Items.Count - 1 Do
- Begin
- StData := StAlias + '.''' + Items[i] + '''';
- StColumnName := Items[i];
- StColumnName := CheckColumnName (StColumnName);
- if DuckQuery.DQFields.FindAsStringPt (StColumnName) <> nil Then Continue;
- ListBoxSelect.Items.Add (StColumnName);
- DQField.Data := StData;
- DQField.ColumnName:= StColumnName;
- DuckQuery.DQFields.Add (@DQField);
- End;
- Finally
- Items.Free;
- End;
- EnabledField;
- End;
- Procedure TFormQuery.BBFieldsAddClick(Sender: TObject);
- Var
- StField, StAlias: String;
- StData: String;
- StColumnName: String;
- DQField: RDQField;
- Begin
- if not BBFieldsAdd.Enabled Then Exit;
- StField := FieldSelect (FieldAllField, StAlias);
- if (StAlias = '') or (StField = '') Then Exit;
- StData := ESelectField.Text;
- StColumnName := EColumnName.Text;
-
- CheckColumnNameDup (StColumnName);
-
- ListBoxSelect.Items.Add (StColumnName);
- DQField.Data := StData;
- DQField.ColumnName:= StColumnName;
- DuckQuery.DQFields.Add (@DQField);
- EnabledField;
- End;
- Procedure TFormQuery.BBFieldsRemoveClick(Sender: TObject);
- Var
- iCount: Integer;
- StColumnName: String;
- Begin
- if not BBFieldsRemove.Enabled Then Exit;
- if ListBoxSelect.Items.Count <= 0 Then Exit;
- iCount := ListBoxSelect.ItemIndex;
- if (iCount < 0) OR (iCount >= ListBoxSelect.Items.Count) Then Exit;
- DuckQuery.DQFields.Delete (iCount);
- ListBoxSelect.Items.Delete (iCount);
-
- if ListBoxSelect.Items.Count > 0 Then
- if iCount >= ListBoxSelect.Items.Count Then
- ListBoxSelect.ItemIndex := ListBoxSelect.Items.Count - 1
- else
- ListBoxSelect.ItemIndex := iCount;
- EnabledField;
- End;
- Procedure TFormQuery.BBAddShowTableClick(Sender: TObject);
- Var
- StAlias: String;
- Begin
- StAlias := GetAlias (FieldAllField);
- if StAlias = '' Then Exit;
- AddFieldWithAlias (StAlias);
- EnabledField;
- End;
- Procedure TFormQuery.BBAddFieldsClick(Sender: TObject);
- Var
- i: Integer;
- StAlias: String;
- TableInfoPtr: PRDQTableInfo;
- Begin
- For i := 0 To DuckQuery.TableInfo.Count - 1 Do
- Begin
- TableInfoPtr := DuckQuery.TableInfo[i];
- StAlias := TableInfoPtr.Alias;
- AddFieldWithAlias (StAlias);
- End;
- EnabledField;
- End;
- Procedure TFormQuery.BBRemoveShowAllClick(Sender: TObject);
- Begin
- DuckQuery.DQFields.Clear;
- ListBoxSelect.Clear;
- EnabledField;
- End;
- Procedure TFormQuery.FieldAllFieldClick(Sender: TObject);
- Begin
- SelectField;
- End;
- Procedure TFormQuery.CBFunctionClick(Sender: TObject);
- Begin
- SelectField;
- End;
- Procedure TFormQuery.ListBoxSelectDragDrop(Sender, Source: TObject; X,
- Y: Integer);
- Var
- iSelect: Integer;
- iIndex: Integer;
- Begin
- iSelect := ListBoxSelect.ItemAtPos (Point (x, y), TRUE);
- iIndex := ListBoxSelect.ItemIndex;
- if (iSelect < 0) or (iSelect >= ListBoxSelect.Items.Count) Then Exit;
- if (iIndex < 0) or (iIndex >= ListBoxSelect.Items.Count) Then Exit;
-
- ListBoxSelect.Items.Move (iIndex, iSelect);
- DuckQuery.DQFields.Move (iIndex, iSelect);
- End;
- Procedure TFormQuery.ListBoxSelectDragOver(Sender, Source: TObject; X,
- Y: Integer; State: TDragState; var Accept: Boolean);
- Begin
- Accept := (Sender = Source);
- End;
-
- { ------------ Sort}
- Procedure TFormQuery.BBSortAddClick(Sender: TObject);
- Var
- i: Integer;
- St: String;
- DQSort: RDQSort;
- Begin
- i := LBSortAll.ItemIndex;
- if (i < 0) or (i >= LBSortAll.Items.Count) Then Exit;
- St := LBSortAll.Items[i];
- if St = '' Then Exit;
- DQSort.Field := St;
- DQSort.SortType := gsAscending;
- DuckQuery.DQSorts.Add (@DQSort);
-
- Case DQSort.SortType of
- gsAscending: St := 'A - ';
- gsDecending: St := 'D - ';
- End;
- St := St + DQSort.Field;
- LBSort.Items.Add (St);
- BBSortRemove.Enabled := LBSort.Items.Count > 0;
- // ASD
- End;
- Procedure TFormQuery.BBSortRemoveClick(Sender: TObject);
- Var
- i: Integer;
- Begin
- i := LBSort.ItemIndex;
- if (i < 0) or (i >= LBSort.Items.Count) Then Exit;
- LBSort.Items.Delete (i);
- DuckQuery.DQSorts.Delete (i);
- BBSortRemove.Enabled := LBSort.Items.Count > 0;
- End;
- Procedure TFormQuery.RGSortClick(Sender: TObject);
- Var
- i: Integer;
- iT: Integer;
- St: String;
- SortPtr: PRDQSort;
- Begin
- i := LBSort.ItemIndex;
- if (i < 0) or (i >= LBSort.Items.Count) Then Exit;
- SortPtr := DuckQuery.DQSorts[i];
- iT := RGSort.ItemIndex;
- Case iT of
- 0:
- Begin
- SortPtr.SortType := gsAscending;
- St := 'A - ';
- End;
- 1:
- Begin
- SortPtr.SortType := gsDecending;
- St := 'D - ';
- End;
- End;
- St := St + SortPtr.Field;
- LBSort.Items[i] := St;
- End;
- Procedure TFormQuery.LBSortClick(Sender: TObject);
- Var
- i: Integer;
- St: String;
- Begin
- i := LBSort.ItemIndex;
- if (i < 0) or (i >= LBSort.Items.Count) Then Exit;
- St := LBSort.Items[i];
- Case St[1] of
- 'A': RGSort.ItemIndex := 0;
- 'D': RGSort.ItemIndex := 1;
- End;
- End;
- Procedure TFormQuery.LBSortDragDrop(Sender, Source: TObject; X,
- Y: Integer);
- Var
- iSelect: Integer;
- iIndex: Integer;
- Begin
- iSelect := LBSort.ItemAtPos (Point (x, y), TRUE);
- iIndex := LBSort.ItemIndex;
- if (iSelect < 0) or (iSelect >= LBSort.Items.Count) Then Exit;
- if (iIndex < 0) or (iIndex >= LBSort.Items.Count) Then Exit;
- LBSort.Items.Move (iIndex, iSelect);
- DuckQuery.DQSorts.Move (iIndex, iSelect);
- End;
- Procedure TFormQuery.LBSortDragOver(Sender, Source: TObject; X, Y: Integer;
- State: TDragState; var Accept: Boolean);
- Begin
- Accept := (Sender = Source);
- End;
-
- { DQGroups }
- Procedure TFormQuery.BBGroupAddClick(Sender: TObject);
- Var
- i: Integer;
- St: String;
- DQGroup: RDQGroup;
- Begin
- i := LBGroupsAll.ItemIndex;
- if (i < 0) or (i >= LBGroupsAll.Items.Count) Then Exit;
- St := LBGroupsAll.Items[i];
- if St = '' Then Exit;
-
- DQGroup.Field := St;
- DuckQuery.DQGroups.Add (@DQGroup);
- LBGroup.Items.Add (St);
- BBGroupRemove.Enabled := LBGroup.Items.Count > 0;
- // ASD
- End;
- Procedure TFormQuery.BBGroupRemoveClick(Sender: TObject);
- Var
- i: Integer;
- Begin
- i := LBGroup.ItemIndex;
- if (i < 0) or (i >= LBGroup.Items.Count) Then Exit;
- LBGroup.Items.Delete (i);
- DuckQuery.DQGroups.Delete (i);
- BBGroupRemove.Enabled := LBGroup.Items.Count > 0;
- End;
- procedure TFormQuery.LBGroupDragDrop(Sender, Source: TObject; X,
- Y: Integer);
- Var
- iSelect: Integer;
- iIndex: Integer;
- Begin
- iSelect := LBGroup.ItemAtPos (Point (x, y), TRUE);
- iIndex := LBGroup.ItemIndex;
- if (iSelect < 0) or (iSelect >= LBGroup.Items.Count) Then Exit;
- if (iIndex < 0) or (iIndex >= LBGroup.Items.Count) Then Exit;
- LBGroup.Items.Move (iIndex, iSelect);
- DuckQuery.DQGroups.Move (iIndex, iSelect);
- End;
- Procedure TFormQuery.LBGroupDragOver(Sender, Source: TObject; X,
- Y: Integer; State: TDragState; var Accept: Boolean);
- Begin
- Accept := (Sender = Source);
- End;
- { Criteria }
- Procedure TFormQuery.VisibleCriteria (bV1, bV2: Boolean);
- Begin
- CBValue1.Visible := bV1;
- SBValue1.Visible := bV1;
-
- LabelAnd.Visible := bV2;
- CBValue2.Visible := bV2;
- SBValue2.Visible := bV2;
- End;
- Procedure TFormQuery.CBFieldClick(Sender: TObject);
- Var
- i: Integer;
- Begin
- i := CBField.ItemIndex;
- if i >= 0 Then
- Begin
- if not CBCommand.Visible Then
- CBCommand.ItemIndex := -1;
- CBCommand.Visible := TRUE;
- VisibleCriteria (FALSE, FALSE);
- End;
- End;
- Procedure TFormQuery.CBCommandClick(Sender: TObject);
- Var
- i: Integer;
- CriteriaType: TDQCriteriaType;
- Begin
- i := CBCommand.ItemIndex;
- CriteriaType := TDQCriteriaType (i + 1);
- Case CriteriaType of
- scEqual,
- scNotEqual,
- scLess,
- scLessEqual,
- scGreater,
- scGreaterEqual,
- scLike,
- scNotLike,
- scIN:
- VisibleCriteria (TRUE, FALSE);
- scNOTNULL,
- scNULL:
- VisibleCriteria (FALSE, FALSE);
- scBetween,
- scBetweenEqual:
- VisibleCriteria (TRUE, TRUE);
- End;
- End;
- Procedure TFormQuery.GetCriterias (Var DQCriterias: RDQCriterias);
- Var
- CriteriaType: TDQCriteriaType;
- i: Integer;
- Begin
- DQCriterias.Field := CBField.Text;
- i := CBCommand.ItemIndex;
- CriteriaType := TDQCriteriaType (i + 1);
- DQCriterias.CriteriaType := CriteriaType;
- DQCriterias.Value1 := CBValue1.Text;
- DQCriterias.Value2 := CBValue2.Text;
- DQCriterias.AddType := TDQCriteriaAdd (RBCriteriaWith.ItemIndex);
- End;
- Procedure TFormQuery.SetCriterias (DQCriterias: RDQCriterias);
- Begin
- CBValue2.Text := DQCriterias.Value2;
- CBValue1.Text := DQCriterias.Value1;
- CBField.ItemIndex := CBField.Items.IndexOf (DQCriterias.Field);
- CBCommand.Visible := TRUE;
- CBCommand.ItemIndex := Integer (DQCriterias.CriteriaType) - 1;
- RBCriteriaWith.ItemIndex := Integer (DQCriterias.AddType);
- CBCommandClick (nil);
- End;
- Procedure TFormQuery.BBAddClick(Sender: TObject);
- Var
- DQCriterias: RDQCriterias;
- St: String;
- Begin
- GetCriterias (DQCriterias);
- DuckQuery.DQCriterias.Add (@DQCriterias);
- St := CriteriasAsString (DuckQuery.DQCriterias.Count - 1, @DQCriterias);
- LBSelect.Items.Add (St);
- BBRemove.Enabled := LBSelect.Items.Count > 0;
- BBClearClick(nil);
- End;
- Procedure TFormQuery.BBRemoveClick(Sender: TObject);
- Var
- i: Integer;
- Begin
- i := LBSelect.ItemIndex;
- if (i < 0) or (i >= LBSelect.Items.Count) Then Exit;
- LBSelect.Items.Delete (i);
- DuckQuery.DQCriterias.Delete (i);
- BBRemove.Enabled := LBSelect.Items.Count > 0;
- BBClearClick (nil);
- End;
- Procedure TFormQuery.BBEditClick(Sender: TObject);
- Var
- CriteriasPtr: PRDQCriterias;
- i: Integer;
- St: String;
- Begin
- i := LBSelect.ItemIndex;
- if (i < 0) or (i >= LBSelect.Items.Count) Then Exit;
- CriteriasPtr := DuckQuery.DQCriterias[i];
- GetCriterias (CriteriasPtr^);
- St := CriteriasAsString (i, CriteriasPtr);
- LBSelect.Items[i] := St;
- End;
- Procedure TFormQuery.BBClearClick(Sender: TObject);
- Begin
- VisibleCriteria (FALSE, FALSE);
- CBField.ItemIndex := -1;
- CBCommand.Visible := FALSE;
- CBValue1.Text := '';
- CBValue2.Text := '';
-
- RBCriteriaWith.Visible := DuckQuery.DQCriterias.Count > 0;
-
- CBField.SetFocus;
- End;
- Procedure TFormQuery.LBSelectClick(Sender: TObject);
- Var
- CriteriasPtr: PRDQCriterias;
- i: Integer;
- Begin
- i := LBSelect.ItemIndex;
- if (i < 0) or (i >= LBSelect.Items.Count) Then Exit;
- CriteriasPtr := DuckQuery.DQCriterias[i];
- SetCriterias (CriteriasPtr^);
- End;
- Procedure TFormQuery.LBSelectDragOver(Sender, Source: TObject; X,
- Y: Integer; State: TDragState; var Accept: Boolean);
- Begin
- Accept := (Sender = Source);
- End;
- Procedure TFormQuery.LBSelectDragDrop(Sender, Source: TObject; X,
- Y: Integer);
- Var
- iSelect: Integer;
- iIndex: Integer;
- Begin
- iSelect := LBSelect.ItemAtPos (Point (x, y), TRUE);
- iIndex := LBSelect.ItemIndex;
- if (iSelect < 0) or (iSelect >= LBSelect.Items.Count) Then Exit;
- if (iIndex < 0) or (iIndex >= LBSelect.Items.Count) Then Exit;
- LBSelect.Items.Move (iIndex, iSelect);
- DuckQuery.DQCriterias.Move (iIndex, iSelect);
- End;
- Procedure TFormQuery.GetTableAndField (StColumn: String; Var StDB, StTable, StAlias, StField: String);
- Var
- FieldPtr: PRDQField;
- TablePtr: PRDQTable;
- iPos: Integer;
- Begin
- StDB := '';
- StAlias := '';
- StField := '';
- FieldPtr := DuckQuery.DQFields.FindAsStringPt (StColumn);
- if FieldPtr = nil Then Exit;
- iPos := Pos ('.', FieldPtr.Data);
- if iPos > 0 Then
- StTable := Copy (FieldPtr.Data, 1, iPos - 1);
-
- iPos := Pos ('.', FieldPtr.Data);
- if iPos > 0 Then
- StField := Copy (FieldPtr.Data, iPos + 1, Length (FieldPtr.Data) - iPos);
-
- TablePtr := DuckQuery.DQTables.FindAsStringPt (StTable);
- if TablePtr = nil Then Exit;
- StTable := TablePtr.Table;
- StDB := TablePtr.DataBase;
- StAlias := TablePtr.Alias;
- End;
- Procedure TFormQuery.SBValue1Click(Sender: TObject);
- Var
- i: Integer;
- CriteriaType: TDQCriteriaType;
- StColumn: String;
- StDB, StTable, StField, StAlias: String;
- Begin
- i := CBCommand.ItemIndex;
- CriteriaType := TDQCriteriaType (i + 1);
- StColumn := CBField.Text;
- GetTableAndField (StColumn, StDB, StTable, StAlias, StField);
- FormDQSelectValue := TFormDQSelectValue.Create (Self);
- FormDQSelectValue.bString := TRUE;
- FormDQSelectValue.GetFieldValueString (StDB, StTable,
- StAlias, StColumn, DuckQuery.DBSession);
- Case CriteriaType of
- scIN:
- Begin
- FormDQSelectValue.LBValue.MultiSelect := TRUE;
- FormDQSelectValue.LBValue.ExtendedSelect := FALSE;
- End;
- End;
- FormDQSelectValue.ShowModal;
- if FormDQSelectValue.ModalResult = mrOK Then
- CBValue1.Text := FormDQSelectValue.StValue;
- CBValue1.SetFocus;
- FormDQSelectValue.Free;
- End;
- Procedure TFormQuery.SBValue2Click(Sender: TObject);
- Var
- i: Integer;
- StColumn: String;
- StDB, StTable, StField, StAlias: String;
- Begin
- i := CBCommand.ItemIndex;
- StColumn := CBField.Text;
- GetTableAndField (StColumn, StDB, StTable, StAlias, StField);
- FormDQSelectValue := TFormDQSelectValue.Create (Self);
-
- FormDQSelectValue.bString := TRUE;
- FormDQSelectValue.GetFieldValueString (StDB, StTable,
- StAlias, StColumn, DuckQuery.DBSession);
- FormDQSelectValue.ShowModal;
- if FormDQSelectValue.ModalResult = mrOK Then
- CBValue2.Text := FormDQSelectValue.StValue;
- CBValue2.SetFocus;
- FormDQSelectValue.Free;
- End;
- Procedure TFormQuery.NewTable;
- Var
- DRTable: RDQTable;
- Begin
- if DuckQuery.DQTables.FindAsStringPt (StAlias) <> nil Then
- Begin
- MessageBoxFormatWarning (IDW_ALIAS_REDEFINE, [StAlias]);
- Exit;
- End;
- LBTable.Items.Add (StAlias);
- DRTable.DataBase := StDataBase;
- DRTable.Table := StTable;
- DRTable.Alias := StAlias;
- DuckQuery.DQTables.Add (@DRTable);
- CreateTableInfo (StDataBase, StTable, StAlias, TRUE);
- AddFieldInfoToAllControl (StAlias);
- End;
-
- Procedure TFormQuery.TNotebookChange(Sender: TObject; NewTab: Integer;
- var AllowChange: Boolean);
- Begin
- Caption := TNotebook.Pages[NewTab];
- if TNotebook.PageIndex = 2 Then
- LoadFieldToScreen;
- End;
-
- Procedure TFormQuery.LoadFieldToScreen;
- Var
- Items: TStrings;
- Begin
- Items := TStringList.Create;
- GetSelectField (Items);
- Try
- CBField.Items.Assign (Items);
- LBGroupsAll.Items.Assign (Items);
- LBSortAll.Items.Assign (Items);
- Finally
- Items.Free;
- End;
- End;
-
- End.
- {
- Procedure TFormQuery.TNotebookChange(Sender: TObject; NewTab: Integer;
- var AllowChange: Boolean);
- Var
- Items: TStrings;
- Begin
- Caption := TNotebook.Pages[NewTab];
- if NewTab in [3, 4, 5] Then
- Begin
- Items := TStringList.Create;
- GetSelectField (Items);
- Try
- Case NewTab of
- 3: CBField.Items.Assign (Items);
- 4: LBGroupsAll.Items.Assign (Items);
- 5: LBSortAll.Items.Assign (Items);
- End;
- Finally
- Items.Free;
- End;
- End;
- End;
- }
-